package com.itheima.info.manger.service;

import com.itheima.info.manger.dao.TeacherDao;
import com.itheima.info.manger.domain.Teacher;
/*
    业务员类
        1. 这里的所有方法【功能】都是给客服用
        2. 如果某些业务涉及到要对数据仓库的数据进行访问的话,那么需要在业务员类中操作库管对象
        3. 该类的核心作用是用于处理业务逻辑,例如: 判断录入的id是否存在
 */
public class TeacherService {



    //业务员中的添加教师功能
    public boolean addTeacher(Teacher tea) {
        //1.创建库管对象,指挥库管对象执行增加教师方法
            //1.1指挥库管对象把学生对象添加进系统
            //1.2将库管添加的结果再传递给当前类方法的调用者(客服)
        TeacherDao teacherdao= new TeacherDao();
        return teacherdao.addTeacher(tea);
    }



    //业务员中的判断id是否存在功能
    public boolean isExist(String id) {
        //1.要拿到系统中已有的所有id信息
            //1.1 指挥库管对象将系统中所有学生信息查找出来
                    /*
            1. allStudents = {null,null,null,null,null}
            2. allStudents = {stu,stu,null,null,null}
            3. allStudents = {stu,stu,stu,stu,stu}
         */
        TeacherDao teacherdao= new TeacherDao();
       Teacher[] allTeachers =  teacherdao.findAllTeachers();

       //2.拿到要检验的id去已有的教师id中遍历查找
        //2.1先假设要查找的id不存在
        boolean flag=false;
        //2.2遍历所有学生信息
        for (int i = 0; i <allTeachers.length ; i++) {
            //2.3拿到每一个教师对象的id
            Teacher tea=allTeachers[i];
            //2.4当前索引位置的教师不为null,并且该教师的学号和要查找的学号一致时,修改标记
            if (tea!=null&&tea.getSid().equals(id)){
                flag=true;
            }
        }
        return flag;
    }



    //业务员中的查看所有教师功能
    public Teacher[] findAllTeachers() {
        //1.创建并指挥库管对象拿到所有教师信息
        TeacherDao teacherdao= new TeacherDao();

        Teacher[] allTeachers=teacherdao.findAllTeachers();
         /*
         分析:
            1. allTeachers = {null,null,null,null,null}   -- return null;
            2. allTeachers = {tea,tea,null,null,null}     -- return allTeachers
            3. allTeachers = {tea,tea,tea,tea,tea}        -- return allTeachers
         */

         /*
            2. 对库管返回的学生数组进行数据分析处理:
                2.1 如果库管返回的数组中全是null,当前方法直接返回null
                2.2 只要库管给我的数组中有一个学生信息,当前方法返回整个库管传过来的学生数组
         */
        //先假设查到的数组allTeachers里面全是null  -- 假设一个学生都没有
        boolean flag=false;

        //遍历allTeachers
        for (int i = 0; i < allTeachers.length; i++) {
            //拿到每一个索引位置的元素进行判断
            if(allTeachers[i]!=null){
                //只要有一个位置不为null,说明有学生,修改标记位为true
                flag=true;
                break;
            }
        }
        //根据flag的值来决定本次方法的返回值
        if(flag){
            return allTeachers;
        }else{
            return null;
        }
    }


    //业务员中的删除教师功能
    public void deleteStudentById(String delId) {
        //1.创建并指挥库管对象去删除教师信息
        TeacherDao teacherdao= new TeacherDao();
        teacherdao.deleteStudentById(delId);
    }


    //业务员中的修改教师信息功能
    public void updateTeacherById(String updateId, Teacher newTeacher) {
        TeacherDao teacherdao= new TeacherDao();
        teacherdao.updateTeacherById( updateId, newTeacher);
    }
}
